//
//  HomeViewController.swift
//  我的微博
//
//  Created by ZhangChao on 15/8/31.
//  Copyright © 2015年 ZhangChao. All rights reserved.
//

import UIKit
import SVProgressHUD

class HomeViewController: BaseViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if !UserAccountViewModel.sharedUserAccount.userLogon{
        
            vistorView?.setupChildViewInfor(nil,massage:"关注一些人，回这里看看有什么惊喜")
        
            return
        }
        
        // 加载数据
        loadData()
        
        // 注册cell
        tableView.registerClass(StatusNormalCell.self, forCellReuseIdentifier: statusNormalCellID)
        tableView.registerClass(StatusForwardCell.self, forCellReuseIdentifier: statusForwardCellID)
        
        // 设置行高(不要使用自动行高)
        tableView.estimatedRowHeight = 200
        tableView.rowHeight = 300
        
        // 取消分割线
        tableView.separatorStyle = UITableViewCellSeparatorStyle.None
        
        // 准备下拉刷新的控件
        refreshControl = WBRefreshControl()
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: UIControlEvents.ValueChanged)
        
    }

    // 视图模型
    private lazy var statusListViewModel = StatusListViewModel()
    
    func loadData(){
        
        // 开始前刷新加载一个刷新动作
        refreshControl?.beginRefreshing()
        
        statusListViewModel.loadStatuses().subscribeNext({ (result) -> Void in
            
//            printLog(result)
            
            }, error: { (error) -> Void in
                
                self.refreshControl?.endRefreshing()
                printLog(error)
                SVProgressHUD.showInfoWithStatus("您的网络不给力")
                
            }) { () -> Void in
                
                self.refreshControl?.endRefreshing()
                
                self.tableView.reloadData()
        }
    }
}

extension HomeViewController{
    
    // 1.数据行数
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return statusListViewModel.statuses.count ?? 0
    }
    // 2.返回cell
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        // 1.获取微博数据
        let statusViewModel = statusListViewModel.statuses[indexPath.row] //由于在statusViewModel中定义的statuses是statusListViewModel类型的,所以不用as!来转换
       
        // 2.设置cell
        let cell = tableView.dequeueReusableCellWithIdentifier(statusViewModel.reuseID, forIndexPath: indexPath) as! StatusCell
        
        // 3.设置数据
        cell.statusViewModel = statusViewModel //as? StatusViewModel
        
        // 4.返回cell
        return cell
    }
    
    // 3.返回行高
    
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        // 获取模型
        let statusViewModel = statusListViewModel.statuses[indexPath.row] // as! StatusViewModel
        
        // 判断视图模型的行高是否为0 如果不为0,表示已经缓存行高
        if statusViewModel.rowHeight > 0 {
            
            return statusViewModel.rowHeight
        }
        
        // 获取cell
        let cell = tableView.dequeueReusableCellWithIdentifier(statusViewModel.reuseID) as! StatusCell
        // 记录行高
        statusViewModel.rowHeight = cell.rowHeight(statusViewModel)
        
        return statusViewModel.rowHeight
    }
}



